1. Technical Field
The present invention relates generally to high-performance, fault-tolerant streaming media delivery in a content delivery network (CDN).
2. Description of the Related Art
Streaming media is a type of Internet content that has the important characteristic of being able to be played while still in the process of being downloaded. A client can play the first packet of the stream, and decompress the second, while receiving the third. Thus, an end user can start enjoying the multimedia without waiting to the end of transmission. Streaming is very useful for delivering media because media files tend to be large, particularly as the duration of the programming increases. Indeed, for live events, the file size is, in effect, infinite. To view a media file that is not streamed, users must first download the file to a local hard disk—which may take minutes or even hours—and then open the file with player software that is compatible with the file format. To view streaming media, the user's browser opens player software, which buffers the file for a few seconds and then plays the file while simultaneously downloading it. Unlike software downloads, streaming media files are not stored locally on a user's hard disk. Once the bits representing content are used, the player typically discards them.
Streaming media quality varies widely according to the type of media being delivered, the speed of the user's Internet connection, network conditions, the bit rate at which the content is encoded, and the format used. In general, streaming audio can be FM quality, but, given typical bandwidth constraints, streaming video is poor by TV standards, with smaller screens, lower resolution, and fewer frames per second. The source for streaming media can be just about any form of media, including VHS or Beta format tapes, audio cassettes, DAT, MPEG video, MP3 audio, AVI, and the like. Prior to streaming, the content must first be encoded, a process which accomplishes four things: conversion of the content from analog to digital form, if necessary; creation of a file in the format recognized by the streaming media server and player; compression of the file to maximize the richness of the content that can be delivered in real-time given limited bandwidth; and, establishing the bit rate at which the media is to be delivered. Content owners typically choose to encode media at multiple rates so that users with fast connections get as good an experience as possible but users with slow connections can also access the content.
Non-streaming content is standards-based in the sense that the server and client software developed by different vendors, such as Apache server, Microsoft Internet Explorer, Netscape Navigator, and the like, generally work well together. Streaming media, however, usually relies on proprietary server and client software. The server, client, production and encoding tools developed by a streaming software vendor are collectively referred to as a format. Streaming media encoded in a particular format must be served by that format's media server and replayed by that format's client. Streaming media clients are often called players, and typically they exist as plug-ins to Web browsers. Streaming media clients are also often capable of playing standards-based non-streaming media files, such as WAV or AVI. The three major streaming media formats in use today are: RealNetworks RealSystem G2, Microsoft Windows Media Technologies (“WMT”), and Apple QuickTime. RealSystem G2 handles all media types including audio, video, animation, and still images and text. RealSystem G2 and QuickTime support SMIL, an XML-based language that allows the content provider to time and position media within the player window. To deliver the media in real time Real and QuickTime use RTSP.
It is well-known to deliver streaming media using a content delivery network (CDN). A CDN is a network of geographically distributed content delivery nodes that are arranged for efficient delivery of digital content (e.g., Web content, streaming media and applications) on behalf of third party content providers. Typically, a CDN is implemented as a combination of a content delivery infrastructure, a DNS-based request-routing mechanism, and a distribution infrastructure. The content delivery infrastructure usually comprises a set of “surrogate” origin servers that are located at strategic locations (e.g., Internet network access points, Internet Points of Presence, and the like) for delivering copies of content to requesting end users. The request-routing mechanism allocates servers in the content delivery infrastructure to requesting clients in a way that, for web content delivery, minimizes a given client's response time and, for streaming media delivery, provides for the highest quality. The distribution infrastructure consists of on-demand or push-based mechanisms that move content from the origin server to the surrogates. In live streaming, the origin server may include an encoder. An effective CDN serves frequently-accessed content from a surrogate that is optimal for a given requesting client. In a typical CDN, a single service provider operates the request-routers, the surrogates, and the content servers. In addition, that service provider establishes business relationships with content publishers and acts on behalf of their origin server sites to provide a distributed delivery system. A well-known commercial CDN service that provides web content and media streaming is provided by Akamai Technologies, Inc. of Cambridge, Mass.
As described in U.S. Pat. No. 6,665,726, which is incorporated herein by reference, live streaming can be further enhanced by having the CDN send multiple copies of the same stream over different routes from a CDN entry point to the optimal streaming server at the edge of the Internet. These copies are then combined to form one complete, original-quality stream, which is sent from the streaming server to the end users. FIG. 1 illustrates this process in more detail. A broadcast stream 100 is sent to a CDN entry point 102. An entry point, for example, typically comprises two servers (for redundancy), and each server can handle many streams from multiple content providers. Once the entry point receives the stream, it rebroadcasts copies of the stream to so-called reflectors 104a-n. The streams preferably are multiplexed and delivered to the set reflectors preferably via UDP (e.g., WMT encapsulated in UDP over IP). These reflectors are preferably diverse from a network and geographic standpoint (e.g., at diverse Internet backbone data centers) to ensure fault tolerance. Each reflector, in turn, rebroadcasts its copy of the stream to each subscribing region, e.g., region 106d, of a set of regions 106a-n. A subscribing region 106d typically is a CDN region that contains one or more streaming edge nodes 108a-n to which user(s) have been routed by the CDN DNS-based request-routing mechanism. In other words, set reflectors send their streams to every edge region where they are needed. A CDN region, in this example, includes a set of edge nodes connected by a common backbone 109, e.g., a local area network (LAN). Typically, an edge node, e.g., node 108d, comprises a streaming server 112 and it may include a cache 110. A representative server runs an Intel processor, the Linux operating system and a Real Media or QuickTime Server. For Windows-based platforms, a representative server runs an Intel processor, Windows NT or 2000, and a Windows Media Server.
The reflector network is used within a content delivery network to enable requesting end users to subscribe to live streams that have been published to CDN entry points. A reflector typically is a generalized packet router program. The reflector network preferably comprises a hierarchy of reflectors that are located at the various entry points into the CDN, at each edge node at which requesting users may be directed by the CDN to obtain live streams, and at various “reflector” nodes located within at least one intermediate layer (in the hierarchy) between the entry points and the edge nodes. As described in U.S. Pat. No. 6,751,673, the edge nodes and each reflector node may also include a manager program that arranges for feeds. When an end user is directed to an edge node that is not yet receiving the desired stream, the edge node's manager issues a subscription request to a set of reflector nodes. If the reflector node(s) are already receiving the desired stream, their reflector(s) begin sending it to the requesting edge node. If, however, the reflector node(s) are not already receiving the desired stream, their manager programs issue the subscription request to the entry point(s) to start the feed. In such a live transport network, the entrypoint announces the existence of a stream to reflectors, while edge reflectors in a given region subscribe for the stream. The reflectors propagate this subscription to the entrypoint, receive the data, and propagate the data to the edge reflectors, who then send it to media servers over a backend network.
From April 2001 to April 2002, the number of high-speed, home-based Internet users in the United States grew from 15.9 million to 25.2 million individuals. Even with low-cost, high-speed Internet connections, delivering streaming media to end users is difficult. Due to widely acknowledged Internet bottlenecks, many consumers are forced to endure slow and unreliable startup of audio and video streams, periods during which significant rebuffering interrupts the experience, or degraded quality of delivery that leads to choppy “slide-show” quality instead of smooth video. Unfortunately, for content providers, site visitors do not find such experiences compelling and, thus, streaming media production dollars often are wasted while important branding and product messages never reach their intended audience.
Therefore, for customers seeking an optimal return on their streaming media investment, it is important that end users attempting to view or listen to a stream have a high quality experience—one that delivers the content as well as entices the user to return to the site.
It would be desirable to provide techniques for enhancing the end user quality of media streams. The present invention addresses this problem.